"""常量定义（实体类型/情感标签/路径）"""

# 金融领域专用实体类型
FINANCIAL_ENTITY_TYPES = {
    'company': '公司',
    'person': '人物',
    'product': '金融产品',  # 细化为金融产品
    'event': '金融事件',   # 细化为金融事件
    'location': '地点',
    'concept': '金融概念',  # 细化为金融概念
    # 新增金融专用实体
    'stock_code': '股票代码',
    'fund_code': '基金代码',
    'bond_code': '债券代码',
    'index_code': '指数代码',
    'currency': '货币',
    'financial_indicator': '财务指标',
    'regulatory_policy': '监管政策',
    'market_trend': '市场趋势'
}

# 金融场景专用情感标签
FINANCIAL_SENTIMENT_LABELS = {
    # 基础情感
    0: '强烈负面',
    1: '负面',
    2: '轻微负面',
    3: '中性',
    4: '轻微正面',
    5: '正面',
    6: '强烈正面',
    
    # 细分金融情感
    'positive_impact': '正面影响',
    'negative_impact': '负面影响',
    'risk_increase': '风险增加',
    'risk_decrease': '风险降低',
    'opportunity': '机会',
    'threat': '威胁',
    'uncertainty': '不确定性'
}


# 实体类型定义
ENTITY_TYPES = {
    'company': '公司',
    'person': '人物',
    'product': '产品',
    'event': '事件',
    'location': '地点',
    'concept': '概念'
}

# 情感标签定义
SENTIMENT_LABELS = {
    0: '负面',
    1: '中性',
    2: '正面'
}

# 模型类型
MODEL_TYPES = {
    'deepseek': 'DeepSeek-7B模型',
    'bert_crf': 'BERT-CRF实体识别模型',
    'rnn': 'RNN时序模型',
    'fusion': '融合模型'
}

# 服务状态
SERVICE_STATUS = {
    'running': '运行中',
    'stopped': '已停止',
    'degraded': '降级状态',
    'error': '错误状态'
}

# 项目路径常量
PROJECT_PATHS = {
    'ROOT': '/',
    'DATA': '/data',
    'RAW_DATA': '/data/raw',
    'PROCESSED_DATA': '/data/processed',
    'MODEL_SAVES': '/model_saves',
    'SRC': '/src',
    'UTILS': '/src/utils',
    'LOGS': '/logs',
    'TESTS': '/tests',
    'SCRIPTS': '/scripts'
}

# HTTP状态码
HTTP_STATUS_CODES = {
    200: '成功',
    400: '请求错误',
    401: '未授权',
    403: '禁止访问',
    404: '资源不存在',
    500: '服务器内部错误',
    503: '服务不可用'
}

# 性能指标名称
PERFORMANCE_METRICS = {
    'qps': '每秒查询数',
    'latency': '延迟(ms)',
    'error_rate': '错误率',
    'throughput': '吞吐量',
    'f1_score': 'F1分数',
    'precision': '精确率',
    'recall': '召回率',
    'ppl': '困惑度'
}

# 缓存键前缀
CACHE_PREFIXES = {
    'sentiment_result': 'sentiment_',
    'entity_result': 'entity_',
    'batch_result': 'batch_',
    'model_status': 'model_',
    'service_status': 'service_'
}

# 正则表达式模式
REGEX_PATTERNS = {
    'phone': r'1[3-9]\d{9}',
    'id_card': r'[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]',
    'email': r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}',
    'url': r'https?://[\w\.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&\'\(\)\*\+,;=.]+',
    'date': r'\d{4}-\d{2}-\d{2}',
    'time': r'\d{2}:\d{2}:\d{2}',
    'datetime': r'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}',
    'number': r'-?\d+(\.\d+)?',
    'percentage': r'\d+(\.\d+)?%',
    'chinese': r'[\u4e00-\u9fa5]+',
    'english': r'[a-zA-Z]+',
    'alphanumeric': r'[a-zA-Z0-9]+'
}

# 数据安全级别
SECURITY_LEVELS = {
    'low': '低',
    'medium': '中',
    'high': '高',
    'critical': '极高'
}

# 日志级别
LOG_LEVELS = {
    'DEBUG': 10,
    'INFO': 20,
    'WARNING': 30,
    'ERROR': 40,
    'CRITICAL': 50
}

# 模型监控指标阈值
MODEL_MONITOR_THRESHOLDS = {
    'psi': 0.2,
    'ks': 0.2,
    'f1_drop': 0.05,
    'ppl_increase': 0.1
}

# 服务监控指标阈值
SERVICE_MONITOR_THRESHOLDS = {
    'latency': 500,  # ms
    'error_rate': 0.01,
    'qps': 1000,
    'cpu_usage': 0.8,
    'memory_usage': 0.8
}

# 添加在文件末尾
# Kafka主题定义
KAFKA_TOPICS = {
    'FINANCIAL_NEWS_RAW': 'financial_news_raw',
    'SOCIAL_MEDIA_RAW': 'social_media_raw',
    'PROCESSED_TEXT': 'processed_text',
    'ENTITY_RECOGNITION_RESULTS': 'entity_recognition_results',
    'SENTIMENT_ANALYSIS_RESULTS': 'sentiment_analysis_results'
}